﻿using SmartWMS.Common.ResponseOutput;
using SmartWMS.Domain.BasicsDatum;
using SmartWMS.Server.BasicsDatumServer.ProductManagement.Dto;
using SmartWMS.Server.BasicsDatumServer.SupplierManagement;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SmartWMS.Server.BasicsDatumServer.ProductManagement
{
    /// <summary>
    /// 产品管理服务层
    /// </summary>
    public interface IProductManagement:ITransientServer
    {
        /// <summary>
        /// 产品管理列表
        /// </summary>
        /// <param name="supplierFyDto"></param>
        /// <returns></returns>
        Response<dynamic> ProductManagementGetList(ProductSelectDto productManagementDto);
        /// <summary>
        /// 供应商管理删除
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Response<bool>> DeleteProductManagementDtoAsyne(ProductManagementDto dto);

        /// <summary>
        /// 供应商管理添加
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Response<bool>> ProductManagementDtoAddSave(ProductManagementDto dto);

        /// <summary>
        /// 供应商管理反填
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Response<ProductManagementDto> GetProductManagementById(ProductManagementDto dto);


        /// <summary>
        /// 供应商管理修改
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        Task<Response<bool>> ProductManagementUpdate(ProductManagementDto dto);

        /// <summary>
        /// 批量删除供应商
        /// </summary>
        /// <param name="dto"></param>
        /// <returns></returns>
        /// <exception cref="NotImplementedException"></exception>
        Task<Response<bool>> DeletesProductManagementIsDisable(ProductManagementDto dto);

        /// <summary>
        /// 加载客户
        /// </summary>
        /// <returns></returns>
        Task<Response<List<Custom>>> BindCustomAsync();

        /// <summary>
        /// 加载库位
        /// </summary>
        /// <returns></returns>
        Task<Response<List<Location>>> BindLocationAsync();


        /// <summary>
        /// 加载仓库
        /// </summary>
        /// <returns></returns>
        Task<Response<List<Warehouse>>> BindWarehouseAsync();

        /// <summary>
        /// 加载单位
        /// </summary>
        /// <returns></returns>
        Task<Response<List<Unit>>> BindUnitAsync();


    }
}
